參考資料
大綱
- Regex 實用工具
- 使用情境
- 常用旗幟 flag (g/i/m)
- 常用 特殊標點字元 ( . , ^ , $ , \ , |)
- 中括號 [ ] 用法 (限定範圍)
- 限定出現次數 ( * , + , {} )
- 常用 縮寫 (\d數字,\w,\s空白字元)
- 一些範例
Regex 工具
使用情境
- 表單驗證 pattern 屬性
- 取代文字
- 搜尋關鍵字 (VSCode內也可搜尋檔案用)
常用的旗幟 flag (i/g/m)
- g 全域 (Global)
- i 忽略大小寫 (Case-Insensitive)
- m 多行文字 (multiline) 範例如下
const str = 'testA\ntestB\ntestC'
// HeyA testB testC (只會取待第一個)
console.log(str.replace(/test/, 'Hey'))
// HeyA HeyB HeyC (取待所有找到的)
console.log(str.replace(/test/g, 'Hey'))
// HeyA testB testC (找test開頭的,此時會無法找到各行開頭)
console.log(str.replace(/^test/g, 'Hey'))
// HeyA HeyB HeyC (因此要找各行開頭,必須待上 m flag)
console.log(str.replace(/^test/gm, 'Hey'))
常用 特殊標點字元
- (.) 點號 代表 任意字元,亦可為無
- (^test) 代表以 test 開頭
- (test$) 代表以 test 結尾
- () 反斜線 代表 跳脫字元
- ( 98 | 95 | 100 ) 直槓 代表 OR
中括號 [ ] 用法 (限定範圍)
- [b-z] 小寫的 b 到 z
- [a-zA-Z] 同時包含大小寫的 a 到 z
- [4-9] 4 到 9
- [a-z0-9] 中括號可以包括多個範圍
限定出現次數 ( . / + / {} )
- (*) 米字號 代表 任意 次數
- (+) 加號 代表 一 或 一次以上
- (?) 問號 代表 零 或 一次
- {2} 大括號 代表 限定次數
- {2,} 逗號 代表 至少要超過 2 個以上
- {,3} 逗號 代表 至多 3 個以上
- {2,9} 逗號 代表 至少 2 個 至多 9 個
const data = 'test\ntest1\ntest12\ntest123'
// test+任意 1 個字元
const Plus1 = /test./gm
// test 後可有 任意 個字元(可無)
const Any = /test.*/gm
// test 後需有 至少 1 個字元
const Over1 = /test.+/gm
// test 後 可為 無字元 或 一個字元
const OneOrNone = /test.?/gm
// test 後需有 2 個字元
const WithTwo = /test.{2}/gm
// test 後至少有 2 個字元以上 (含2個)
const OverTwo = /test.{2,}/gm
// test 後至少 有 2 個字元 至多 9 個字元
const OverTwoLessNine = /test.{2,9}/gm
常用 縮寫 (\d Digital \w Word \s Space)
- \d 代表 數字 等同於 [0-9]
- \D 代表 非數字 等同於 [^0-9]
- \w 代表 數字、字母、底線 等同 [a-zA-Z0-9_]
- \W 代表 非 \w 等同 [^a-zA-Z0-9_]
- \s 代表 空白字元 等同 [\r\t\n\f]
- \S 代表 非 空白字元 等同 [^\r\t\n\f]
- \t 代表 TAB 鍵
- \n 代表 換行
範例
// 以 09 開頭 後接 8 個數字
const PhoneRegex = /^09[0-9]{8}$/
// ? 表前一個字可有可無 反斜線 和 . 要用跳脫字元
const urlRegex = /https?:\/\/[a-zA-Z0-9\.\/]+/